summaryrefslogblamecommitdiffstats
path: root/helpers.py
blob: 414cb871217f94bcb110866e88c72e1e657b2de3 (plain) (tree)





































































                                                                                                                                                                    
import requests
import json
from datetime import datetime, timezone, timedelta
from functools import lru_cache

def formatEndDate(st):
    if st is None:
        return (None, None)
    dt = datetime.strptime(st, "%Y-%m-%dT%H:%M:%S.%f0%z")
    formatted = dt.strftime("%d.%m.%Y")

    # print days from today to date
    daysRemaining = (dt - datetime.now(timezone.utc)).days

    return (formatted, daysRemaining)


purl = "https://evinjeta.dars.si/selfcare/api/eshop/shopping-cart/validate"

json_dump = open("payload.txt", "r").read()
payload = json.loads(json_dump)


def get_headers():
    hdump = [x.split(":") for x in [t for t in open("headers.txt", "r")][1:]]
    headers = {h[0]: h[1].strip() for h in hdump}
    return headers

@lru_cache(maxsize=None)
def veljavnost(registrska: str):
    today = datetime.now()
    one_year_after = today + timedelta(days=365)
    payload["registrationNumber"] = registrska
    payload["registrationNumberAgain"] = registrska
    payload["vignetteValidityStart"] = today.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
    payload["vignetteValidityEnd"] = one_year_after.strftime(
        "%Y-%m-%dT%H:%M:%S.%f0%z")
    r = requests.post(purl, json=payload, headers=get_headers(), verify=False)
    # print("\n"+r.text+"\n------------------\n\n\n")
    print(r.status_code, r.reason, r.url)
    return r.json()


def aux(registrska):
    registrska = registrska.upper().replace(" ", "").replace("-", "").strip()
    if len(registrska) > 8 or len(registrska) < 5 or not registrska.isalnum():
        return None
    if registrska == "FTEST":
        t = 1/0
    if registrska[:3] == "XXX":
      return None
    jdump = veljavnost(registrska)["vignetteValidationResult"]
    if "exemptedVehicles" in jdump and len(jdump["exemptedVehicles"]) > 0:
        return f'Oproščeno {jdump["exemptedVehicles"][0]["exemptionReasonId"]["text"]}'

    # for k, v in jdump.items():
    #     print(f"{k}: {v}")
    max_date = None
    for v in jdump["vignettes"]:
        print(v)
        date_1 = v["vignetteValidityStart"]
        date_2 = v["vignetteValidityEnd"]
        if max_date is None or date_2 > max_date:
            max_date = date_2
        # resp.append(f"Obstaja vinjeta veljavna od {formatEndDate(date_1)[0]} do {formatEndDate(date_2)[0]}, torej je veljavna še {formatEndDate(date_2)[1]} dni")
    return formatEndDate(max_date)[0]


if __name__ == "__main__":
    pass